package edu.server.servicio;

import java.util.Date;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import edu.client.Validaciones;
import edu.client.VentasService.VentasService;
import edu.server.dominio.D_Empleado;
import edu.server.dominio.D_OrdenFabricacionGeneral;
import edu.server.dominio.D_OrdenPedido;
import edu.server.dominio.D_RequerimientoCompra;
import edu.server.dominio.D_ReservaProducto;
import edu.server.dominio.Ingenieria;
import edu.server.dominio.Ventas;
import edu.server.repositorio.Cliente;
import edu.server.repositorio.ComponentePatron;
import edu.server.repositorio.Contacto;
import edu.server.repositorio.Direccion;
import edu.server.repositorio.EquipoPatron;
import edu.server.repositorio.Localidad;
import edu.server.repositorio.OrdenFabricacionGeneral;
import edu.server.repositorio.OrdenPedido;
import edu.server.repositorio.Pais;
import edu.server.repositorio.Provincia;
import edu.server.repositorio.RenglonOrdenPedido;
import edu.server.repositorio.RequerimientoCompra;
import edu.server.repositorio.ReservaProducto;
import edu.shared.DTO.ClienteDTO;
import edu.shared.DTO.ComponentePatronDTO;
import edu.shared.DTO.ContactoDTO;
import edu.shared.DTO.DireccionDTO;
import edu.shared.DTO.EquipoPatronDTO;
import edu.shared.DTO.OrdenPedidoDTO;
import edu.shared.DTO.RenglonOrdenPedidoDTO;

public class VentasServiceImpl extends RemoteServiceServlet implements VentasService {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6738286800898820770L;

/*-----------------------------------------------------------------------código sección producto----------------------------------------------------*/	
	
	// Se utiliza la clase correspondiente del paquete "dominio" (Ventas en este caso) para acceder a la base de datos. Luego se carga el correspondiente DTO,
	// que es devuelto a la clase llamadora a través del AsyncCallback.
	
	@Override
	public List<OrdenPedidoDTO> buscarOrdenesPedido() throws IllegalArgumentException {

		List<OrdenPedido> listaOrdenPedido = new LinkedList<OrdenPedido>();
		List<OrdenPedidoDTO> listaOrdenPedidoDTO = new LinkedList<OrdenPedidoDTO>();

		Ventas adminVentas = new Ventas();
		
		listaOrdenPedido = adminVentas.buscarOrdenesPedido();
		
		for (OrdenPedido ordenPedido : listaOrdenPedido) {
			
			OrdenPedidoDTO nuevaOrdenPedidoDTO = new OrdenPedidoDTO();
			
			nuevaOrdenPedidoDTO.setNroOrden(ordenPedido.getNroOrden());
						
			if (!ordenPedido.isPlanificada())
				nuevaOrdenPedidoDTO.setNombreCliente(ordenPedido.getCliente().getNombre().toUpperCase());
			else {
				nuevaOrdenPedidoDTO.setNombreCliente("ORDEN PLANIFICADA");
				nuevaOrdenPedidoDTO.setPlanificada(true);
			}
			
			nuevaOrdenPedidoDTO.setEstado(ordenPedido.getEstado());
			nuevaOrdenPedidoDTO.setFechaPrevistaEntrega(ordenPedido.getFechaPrevistaEntrega());
			
			listaOrdenPedidoDTO.add(nuevaOrdenPedidoDTO);
		}
		
		return listaOrdenPedidoDTO;
	}
	
	@Override
	public OrdenPedidoDTO getOrdenPedidoCompleta(long numeroOrdenPedido) throws IllegalArgumentException {
		
		OrdenPedido ordenPedido = new OrdenPedido();
		OrdenPedidoDTO ordenPedidoDTO = new OrdenPedidoDTO();
		LinkedList<RenglonOrdenPedidoDTO> renglonesOrdenPedidoDTO = new LinkedList<RenglonOrdenPedidoDTO>();
		
		Ventas adminVentas = new Ventas();
		
		ordenPedido = adminVentas.getOrdenPedidoCompleta(numeroOrdenPedido);
		
		ordenPedidoDTO.setNroOrden(ordenPedido.getNroOrden());
		
		if (!ordenPedido.isPlanificada())
			ordenPedidoDTO.setNombreCliente(ordenPedido.getCliente().getNombre().toUpperCase());
		else {
			ordenPedidoDTO.setNombreCliente("ORDEN PLANIFICADA");
			ordenPedidoDTO.setPlanificada(true);
		}
		
		ordenPedidoDTO.setFechaGeneracion(ordenPedido.getFechaGeneracion());
		ordenPedidoDTO.setFechaPrevistaEntrega(ordenPedido.getFechaPrevistaEntrega());
		ordenPedidoDTO.setObservacion(ordenPedido.getObservacion());
		ordenPedidoDTO.setEstado(ordenPedido.getEstado());
		ordenPedidoDTO.setNombreEmpleado(ordenPedido.getEmpleado().getApellido() + ", " + ordenPedido.getEmpleado().getNombre());
		
		for (RenglonOrdenPedido renglon : ordenPedido.getRenglonOrdenPedidos()) {
			RenglonOrdenPedidoDTO renglonDTO = new RenglonOrdenPedidoDTO();
			
			if(renglon.getEquipoPatron() != null) {
				EquipoPatronDTO equipoPatronDTO = new EquipoPatronDTO();
				equipoPatronDTO.setCodigoClase(renglon.getEquipoPatron().getSubclaseEquipoPatron().getId().getCodigoClaseEquipoPatron());
				equipoPatronDTO.setCodigoSubclase(renglon.getEquipoPatron().getSubclaseEquipoPatron().getId().getCodigoSubclaseEquipoPatron());
				equipoPatronDTO.setNroVersion(renglon.getEquipoPatron().getNroVersion());
				equipoPatronDTO.setPlano(renglon.getEquipoPatron().getPlano());
				
				renglonDTO.setCodigo(Validaciones.rellenarCodigoEquipoPatron(equipoPatronDTO));
				renglonDTO.setNombre(renglon.getNombreParaCliente());
				renglonDTO.setCantidad(renglon.getCantidad());
				renglonDTO.setObservaciones(renglon.getObservaciones());
				renglonDTO.setEquipoOComponente("EQUIPO");
				
			}
			else {
				ComponentePatronDTO componentePatronDTO = new ComponentePatronDTO();
				componentePatronDTO.setCodigoClase(renglon.getComponentePatron().getSubclaseEquipoPatron().getId().getCodigoClaseEquipoPatron());
				componentePatronDTO.setCodigoSubclase(renglon.getComponentePatron().getSubclaseEquipoPatron().getId().getCodigoSubclaseEquipoPatron());
				componentePatronDTO.setCodigoComponente(renglon.getComponentePatron().getCodigoComponente());
				componentePatronDTO.setCodigoSubcomponente(renglon.getComponentePatron().getCodigoSubcomponente());
				componentePatronDTO.setNroVersion(renglon.getComponentePatron().getNroVersion());
				componentePatronDTO.setPlano(renglon.getComponentePatron().getPlano());
				
				renglonDTO.setCodigo(Validaciones.rellenarCodigoComponentePatron(componentePatronDTO));
				renglonDTO.setNombre(renglon.getNombreParaCliente());
				renglonDTO.setCantidad(renglon.getCantidad());
				renglonDTO.setObservaciones(renglon.getObservaciones());
				renglonDTO.setEquipoOComponente("COMPONENTE");

			}
			renglonesOrdenPedidoDTO.add(renglonDTO);
			
		}
		
		ordenPedidoDTO.setRenglonOrdenPedidosDTO(renglonesOrdenPedidoDTO);
				
		return ordenPedidoDTO;
		
	}
	
	@Override
	public long registrarOrdenPedido(OrdenPedidoDTO ordenPedidoDTO) throws IllegalArgumentException {

		OrdenPedido ordenPedido = new OrdenPedido();
		
		long idOrdenPedido;
		
		Ventas adminVentas = new Ventas();

		D_Empleado adminEmpleado = new D_Empleado();
		
		int idEmpleado = adminEmpleado.getIdEmpleado(ordenPedidoDTO.getNombreEmpleado());
		
		edu.server.repositorio.Empleado empleado = adminEmpleado.getEmpleado(idEmpleado);
		
		ordenPedido.setNroOrden(ordenPedidoDTO.getNroOrden());
		ordenPedido.setEmpleado(empleado);
		ordenPedido.setFechaGeneracion(ordenPedidoDTO.getFechaGeneracion());
		
		if(!ordenPedidoDTO.getNombreCliente().equals("ORDEN PLANIFICADA")) {
			Cliente cliente = adminVentas.getEmpresaCompleta(ordenPedidoDTO.getNombreCliente());
			ordenPedido.setCliente(cliente);
			ordenPedido.setPlanificada(false);
		}
		else
			ordenPedido.setPlanificada(true);
		
		ordenPedido.setFechaPrevistaEntrega(ordenPedidoDTO.getFechaPrevistaEntrega());
		ordenPedido.setFechaCierre(ordenPedidoDTO.getFechaCierre());
		ordenPedido.setEstado(ordenPedidoDTO.getEstado());
		ordenPedido.setObservacion(ordenPedidoDTO.getObservacion());  
		
		Set<RenglonOrdenPedido> renglonesOrdenPedido = new HashSet<RenglonOrdenPedido>();
		
		for (RenglonOrdenPedidoDTO renglonDTO : ordenPedidoDTO.getRenglonOrdenPedidosDTO()) {
			RenglonOrdenPedido renglon = new RenglonOrdenPedido();
			
			Ingenieria adminIngenieria = new Ingenieria();
			
			renglon.setCantidad(renglonDTO.getCantidad());
			renglon.setEnAlmacen(renglonDTO.isEnAlmacen());
			renglon.setNombreParaCliente(renglonDTO.getNombre());
			renglon.setObservaciones(renglonDTO.getObservaciones());
			
			int codigoClase = Integer.parseInt(renglonDTO.getCodigo().substring(0, 2));
			int codigoSubclase = Integer.parseInt(renglonDTO.getCodigo().substring(2, 4));
			String version = renglonDTO.getCodigo().split("-")[1];
			int codigoComponente = Integer.parseInt(renglonDTO.getCodigo().split("-")[2].substring(0, 2));
			int codigoSubcomponente = Integer.parseInt(renglonDTO.getCodigo().split("-")[2].substring(2, 4));
			int plano = Integer.parseInt(renglonDTO.getCodigo().split("-")[3]);
			
			if (renglonDTO.getEquipoOComponente().equals("EQUIPO")) {
				EquipoPatron equipoPatron = adminIngenieria.buscarEquipoPatron(codigoClase, codigoSubclase, plano, version);
				renglon.setEquipoPatron(equipoPatron);			
			}
			else {
				ComponentePatron componentePatron = adminIngenieria.buscarComponentePatron(codigoClase, codigoSubclase, version, codigoComponente, codigoSubcomponente, plano);
				renglon.setComponentePatron(componentePatron);
			}
			
			renglonesOrdenPedido.add(renglon);
		}
		
		ordenPedido.setRenglonOrdenPedidos(renglonesOrdenPedido);
		
		idOrdenPedido = adminVentas.registrarOrdenPedido(ordenPedido);
		
		return idOrdenPedido;
	}
	
	
	public long cerrarOrdenPedido(long nroOrdenPedido)
	{
		//cerramos la orden de pedido
		D_OrdenPedido ordenPedidoDominio = new D_OrdenPedido(); 
		OrdenPedido ordenPedido;
		
		//buscamos la orden de pedido
		ordenPedido = ordenPedidoDominio.buscarOrdenPedido(nroOrdenPedido);
		
		//seteamos los datos de la orden de pedido cerrada
		ordenPedido.setEstado("CERRADA");
		ordenPedido.setFechaCierre(new Date());
		
		//persistimos los cambios en la base de datos
		ordenPedidoDominio.registrar(ordenPedido);
		

		//cerramos la orden de fabricación
		D_OrdenFabricacionGeneral ordenFabricacionDominio = new D_OrdenFabricacionGeneral();
		OrdenFabricacionGeneral ordenFabricacion;
		
		//buscamos la orden de fabricacion
		ordenFabricacion = ordenFabricacionDominio.buscarPorOrdenPedido(nroOrdenPedido);
		
		//si la orden de pedido tenía una orden de fabricación asociada
		if(ordenFabricacion != null)
		{
			ordenFabricacion.setEstado("CERRADA");
			ordenFabricacion.setFechaCierre(new Date());
			
			//persistimos los cambios en la base de datos
			ordenFabricacionDominio.registrar(ordenFabricacion);
			
			
			//buscamos las reservas de producto de la orden de fabricación
			D_ReservaProducto reservaProductoDominio = new D_ReservaProducto();
			List<ReservaProducto> reservasRequerimiento;
			
			reservasRequerimiento = reservaProductoDominio.buscarPorOrdenFabricacion(ordenFabricacion.getNroOrden());
			reservaProductoDominio.eliminarReservas(reservasRequerimiento);


			//buscamos los requerimientos de compra de la orden de fabricación
			D_RequerimientoCompra requerimientoCompraDominio = new D_RequerimientoCompra();
			List<RequerimientoCompra> requerimientosCompra;
			
			requerimientosCompra = requerimientoCompraDominio.buscarPorOrdenFabricacion(ordenFabricacion.getNroOrden());
			
			//borramos los requerimientos de compra
			requerimientoCompraDominio.borrar(requerimientosCompra);
		}	
		
		return nroOrdenPedido;
	}
	
/*----------------------------------------------------------------------código sección insumos-----------------------------------------------------*/
	
	@Override
	public Boolean registrarNuevoCliente(ClienteDTO cliente) throws IllegalArgumentException {
		Pais pais = new Pais();
		Provincia provincia = new Provincia();
		Localidad local = new Localidad();
		Direccion domicilio = new Direccion();
		Cliente nuevo = new Cliente();
		pais.setNombre(cliente.getDireccion().getPais().toUpperCase());
		provincia.setNombre(cliente.getDireccion().getProvincia().toUpperCase());
		local.setNombre(cliente.getDireccion().getLocalidad().toUpperCase());
		local.setCodigoPostal(cliente.getDireccion().getCodigoLocalidad());
		provincia.setPais(pais);
		local.setProvincia(provincia);
		
		domicilio.setCalle(cliente.getDireccion().getCalle());
		domicilio.setAltura(cliente.getDireccion().getAltura());
		domicilio.setPiso(cliente.getDireccion().getPiso());
		domicilio.setOficina(cliente.getDireccion().getOficina());
		domicilio.setCpa(cliente.getDireccion().getCpa());
		domicilio.setLocalidad(local);

		nuevo.setNombre(cliente.getNombre());
		nuevo.setCuit(cliente.getCuit());
		nuevo.setResponsable(cliente.getResponsable());
		nuevo.setRubro(cliente.getRubro());
		nuevo.setFax(cliente.getFax());
		nuevo.setTelefono(cliente.getTelefono());
		nuevo.setPaginaWeb(cliente.getPaginaWeb());
		nuevo.setMail(cliente.getMail());
		nuevo.setObservaciones(cliente.getObservaciones());
		nuevo.setDireccion(domicilio);
		if (cliente.getContacto().size() > 0) {
			for (ContactoDTO contacto : cliente.getContacto()) {
				Contacto nuevoCont = new Contacto();
				nuevoCont.setCargo(contacto.getCargo());
				nuevoCont.setCelular(contacto.getCelular());
				nuevoCont.setInternoEmpresa(contacto.getInternoEmpresa());
				nuevoCont.setMail(contacto.getMail());
				nuevoCont.setNombre(contacto.getNombre());
				nuevoCont.setTelefonoEmpresa(contacto.getTelefonoEmpresa());
				nuevoCont.setTelefonoParticular(contacto.getTelefonoParticular());
				nuevoCont.setCliente(nuevo);
				nuevo.getContactos().add(nuevoCont);
			}
		}
		Ventas adminVnetas = new Ventas();
		return adminVnetas.registrarCliente(nuevo);

	}
	
	@Override
	public Boolean registrarCambioCliente(ClienteDTO cliente) throws IllegalArgumentException{
		Pais pais = new Pais();
		Provincia provincia = new Provincia();
		Localidad local = new Localidad();
		Direccion domicilio = new Direccion();
		Cliente nuevo = new Cliente();
		pais.setNombre(cliente.getDireccion().getPais().toUpperCase());
		provincia.setNombre(cliente.getDireccion().getProvincia().toUpperCase());
		local.setNombre(cliente.getDireccion().getLocalidad().toUpperCase());
		local.setCodigoPostal(cliente.getDireccion().getCodigoLocalidad());
		provincia.setPais(pais);
		local.setProvincia(provincia);
		
		domicilio.setCalle(cliente.getDireccion().getCalle());
		domicilio.setAltura(cliente.getDireccion().getAltura());
		domicilio.setPiso(cliente.getDireccion().getPiso());
		domicilio.setOficina(cliente.getDireccion().getOficina());
		domicilio.setCpa(cliente.getDireccion().getCpa());
		domicilio.setLocalidad(local);

		nuevo.setNombre(cliente.getNombre());
		nuevo.setCuit(cliente.getCuit());
		nuevo.setResponsable(cliente.getResponsable());
		nuevo.setRubro(cliente.getRubro());
		nuevo.setFax(cliente.getFax());
		nuevo.setTelefono(cliente.getTelefono());
		nuevo.setPaginaWeb(cliente.getPaginaWeb());
		nuevo.setMail(cliente.getMail());
		nuevo.setObservaciones(cliente.getObservaciones());
		nuevo.setDireccion(domicilio);
		if (cliente.getContacto().size() > 0) {
			for (ContactoDTO contacto : cliente.getContacto()) {
				Contacto nuevoCont = new Contacto();
				nuevoCont.setCargo(contacto.getCargo());
				nuevoCont.setCelular(contacto.getCelular());
				nuevoCont.setInternoEmpresa(contacto.getInternoEmpresa());
				nuevoCont.setMail(contacto.getMail());
				nuevoCont.setNombre(contacto.getNombre());
				nuevoCont.setTelefonoEmpresa(contacto.getTelefonoEmpresa());
				nuevoCont.setTelefonoParticular(contacto.getTelefonoParticular());
				nuevoCont.setCliente(nuevo);
				nuevo.getContactos().add(nuevoCont);
			}
		}
		Ventas adminVnetas = new Ventas();
		return adminVnetas.registrarCambiosCliente(nuevo);
	}
	
	@Override
	public List<String> getNombresEmpresas() throws IllegalArgumentException {
		
		Ventas adminVentas = new Ventas();
		
		return adminVentas.getNombresEmpresas();
		
	}
	
	@Override
	public List<String> getRubros() throws IllegalArgumentException {
		
		Ventas adminVentas = new Ventas();
		
		return adminVentas.getRubros();
		
	}
	
	@Override
	public List<String> getContactos() throws IllegalArgumentException {
		
		Ventas adminVentas = new Ventas();
		
		return adminVentas.getContactos();
		
	}
	
	@Override
	public List<ClienteDTO> getEmpresas(String nombre) throws IllegalArgumentException{
		
		List<ClienteDTO> result = new LinkedList<ClienteDTO>();
		Ventas adminVentas = new Ventas();
		List<Cliente> busqueda = adminVentas.getEmpresas(nombre);
		
		for (Cliente cliente : busqueda) {
			
			ClienteDTO nuevo = new ClienteDTO();
			nuevo.setNombre(cliente.getNombre());
			nuevo.setRubro(cliente.getRubro());
			nuevo.setTelefono(cliente.getTelefono());
			nuevo.setMail(cliente.getMail());
			
			result.add(nuevo);		
			
		}
		
		return result;
		
		
	}
	
	@Override
	public List<ClienteDTO> getEmpresas() throws IllegalArgumentException{
		
		List<ClienteDTO> result = new LinkedList<ClienteDTO>();
		Ventas adminVentas = new Ventas();
		List<Cliente> busqueda = adminVentas.getEmpresas();
		
		for (Cliente cliente : busqueda) {
			
			ClienteDTO nuevo = new ClienteDTO();
			nuevo.setNombre(cliente.getNombre());
			nuevo.setRubro(cliente.getRubro());
			nuevo.setTelefono(cliente.getTelefono());
			nuevo.setMail(cliente.getMail());
			
			result.add(nuevo);		
			
		}
		
		return result;
		
		
	}
		
	@Override
	public List<ClienteDTO> getEmpresasPorRubro(String nombre) throws IllegalArgumentException{
		
		List<ClienteDTO> result = new LinkedList<ClienteDTO>();
		Ventas adminVentas = new Ventas();
		List<Cliente> busqueda = adminVentas.getEmpresasPorRubro(nombre);
		
		for (Cliente cliente : busqueda) {
			
			ClienteDTO nuevo = new ClienteDTO();
			nuevo.setNombre(cliente.getNombre());
			nuevo.setRubro(cliente.getRubro());
			nuevo.setTelefono(cliente.getTelefono());
			nuevo.setMail(cliente.getMail());
			
			result.add(nuevo);		
			
		}
		
		return result;
		
		
	}
		
	@Override
	public List<ContactoDTO> getEmpresasPorContacto(String nombre) throws IllegalArgumentException{
		
		List<ContactoDTO> result = new LinkedList<ContactoDTO>();
		Ventas adminVentas = new Ventas();
		List<Contacto> busqueda = adminVentas.getEmpresasPorContacto(nombre);
	
			
			for (Contacto contacto : busqueda) {

				String[] rubroYempresa = adminVentas.getEmpresaRubroPorIdCliente(contacto.getCliente().getIdCliente());

				ContactoDTO nuevo = new ContactoDTO();
				ClienteDTO nuevoCliente = new ClienteDTO();
				nuevoCliente.setNombre(rubroYempresa[0]);
				nuevoCliente.setRubro(rubroYempresa[1]);
				nuevo.setNombre(contacto.getNombre());
				nuevo.setCargo(contacto.getCargo());
				nuevo.setCliente(nuevoCliente);

				result.add(nuevo);

			}

		
		return result;
		
		
	}
		
	@Override
	public ClienteDTO getEmpresaCompleta(String nombre)  throws IllegalArgumentException{
			
	
		Ventas adminVentas = new Ventas();
		Cliente busqueda = new Cliente();
		
		busqueda = adminVentas.getEmpresaCompleta(nombre);
						
		ClienteDTO result = new ClienteDTO();
		
		DireccionDTO dire = new DireccionDTO();
		
		dire.setCalle(busqueda.getDireccion().getCalle());
		dire.setAltura(busqueda.getDireccion().getAltura());
		dire.setOficina(busqueda.getDireccion().getOficina());
		dire.setPiso(busqueda.getDireccion().getPiso());
		dire.setCpa(busqueda.getDireccion().getCpa());
		dire.setLocalidad(busqueda.getDireccion().getLocalidad().getNombre());
		dire.setProvincia(busqueda.getDireccion().getLocalidad().getProvincia().getNombre());
		dire.setPais(busqueda.getDireccion().getLocalidad().getProvincia().getPais().getNombre());
		dire.setCodigoLocalidad(busqueda.getDireccion().getLocalidad().getCodigoPostal());		
		
		result.setNombre(busqueda.getNombre());
		result.setCuit(busqueda.getCuit());
		result.setRubro(busqueda.getRubro());
		result.setResponsable(busqueda.getResponsable());
		result.setTelefono(busqueda.getTelefono());
		result.setFax(busqueda.getFax());
		result.setMail(busqueda.getMail());
		result.setPaginaWeb(busqueda.getPaginaWeb());
		result.setObservaciones(busqueda.getObservaciones());
		result.setDireccion(dire);
		
		for (Contacto contacto : busqueda.getContactos()) {

			ContactoDTO nuevo = new ContactoDTO();
			nuevo.setNombre(contacto.getNombre());
			nuevo.setCargo(contacto.getCargo());
			nuevo.setCelular(contacto.getCelular());
			nuevo.setMail(contacto.getMail());
			nuevo.setTelefonoEmpresa(contacto.getTelefonoEmpresa());
			nuevo.setTelefonoParticular(contacto.getTelefonoParticular());
			nuevo.setInternoEmpresa(contacto.getInternoEmpresa());
			
			result.getContacto().add(nuevo);
			
		}				
		
			
		return result;
		
	}
	
	@Override
	public ContactoDTO getContactoCompleto(String nombreContacto, String nombreEmpresa) throws IllegalArgumentException{
		
		Contacto contacto;
		
		Ventas adminVentas = new Ventas();
		contacto = adminVentas.getContactoCompleto(nombreContacto, nombreEmpresa);
		
		
		ContactoDTO nuevo = new ContactoDTO();
		nuevo.setNombre(contacto.getNombre());
		nuevo.setCargo(contacto.getCargo());
		nuevo.setCelular(contacto.getCelular());
		nuevo.setMail(contacto.getMail());
		nuevo.setTelefonoEmpresa(contacto.getTelefonoEmpresa());
		nuevo.setTelefonoParticular(contacto.getTelefonoParticular());
		nuevo.setInternoEmpresa(contacto.getInternoEmpresa());
		
		return nuevo;
		
	}
		
	@Override
	public Boolean eliminarContacto(String nombreEmpresa, String nombreContacto) throws IllegalArgumentException{
		
		Ventas adminVentas = new Ventas();
		 
		return adminVentas.eliminarContacto(nombreEmpresa, nombreContacto);
		
		
		
	}
	
	@Override
	public Boolean eliminarEmpresa(String nombreEmpresa) throws IllegalArgumentException{
		
		Ventas adminVentas = new Ventas();
		 
		return adminVentas.eliminarEmpresa(nombreEmpresa);
		
		
		
	}
	
	@Override
	public Boolean modificarContacto(ContactoDTO contacto, int idContacto) throws IllegalArgumentException{
		
		
		Contacto nuevoCont = new Contacto();
		Ventas adminVentas = new Ventas();
		Cliente cliente = adminVentas.getEmpresaCompleta(contacto.getCliente().getNombre());
		
		nuevoCont.setIdContacto(idContacto);
		nuevoCont.setCargo(contacto.getCargo());
		nuevoCont.setCelular(contacto.getCelular());
		nuevoCont.setInternoEmpresa(contacto.getInternoEmpresa());
		nuevoCont.setMail(contacto.getMail());
		nuevoCont.setNombre(contacto.getNombre());
		nuevoCont.setTelefonoEmpresa(contacto.getTelefonoEmpresa());
		nuevoCont.setTelefonoParticular(contacto.getTelefonoParticular());
		nuevoCont.setProveedor(null);
		nuevoCont.setCliente(cliente);
			
				 
		return adminVentas.registrarCambiosContacto(nuevoCont);
		
		
	}
		
	@Override
	public int retornaIdContacto(String nombreEmpresa, String nombreContacto) throws IllegalArgumentException{
		
		Ventas adminVentas = new Ventas();
		return adminVentas.retornaIdContacto(nombreEmpresa, nombreContacto);	
		
	}
}
